// This example shows how to create and use two isolated client objects, resulting in two separate connections to the target // OPC UA server. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . using System; using System.Diagnostics; using OpcLabs.EasyOpc.UA; using OpcLabs.EasyOpc.UA.OperationModel; namespace UADocExamples._EasyUAClient { class Isolated { public static void Main1() { UAEndpointDescriptor endpointDescriptor = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"; // or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported) // or "https://opcua.demo-this.com:51212/UA/SampleServer/" // Instantiate the client objects and make them isolated var client1 = new EasyUAClient { Isolated = true }; var client2 = new EasyUAClient { Isolated = true }; // The callback is a local method the displays the value void DataChangeCallback(object sender, EasyUADataChangeNotificationEventArgs eventArgs) { Debug.Assert(!(eventArgs is null)); string displayPrefix = $"[{eventArgs.Arguments.State}]"; if (eventArgs.Succeeded) { Debug.Assert(!(eventArgs.AttributeData is null)); Console.WriteLine($"{displayPrefix} {eventArgs.AttributeData}"); } else Console.WriteLine($"{displayPrefix} *** Failure: {eventArgs.ErrorMessageBrief}"); } Console.WriteLine("Subscribing..."); client1.SubscribeDataChange(endpointDescriptor, "nsu=http://test.org/UA/Data/ ;i=10853", 1000, DataChangeCallback, state: 1); client2.SubscribeDataChange(endpointDescriptor, "nsu=http://test.org/UA/Data/ ;i=10853", 1000, DataChangeCallback, state: 2); Console.WriteLine("Processing data change events for 10 seconds..."); System.Threading.Thread.Sleep(10 * 1000); Console.WriteLine("Unsubscribing..."); client1.UnsubscribeAllMonitoredItems(); client2.UnsubscribeAllMonitoredItems(); Console.WriteLine("Waiting for 2 seconds..."); System.Threading.Thread.Sleep(2 * 1000); } } }
# This example shows how to create and use two isolated client objects, resulting in two separate connections to the # target OPC UA server. # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . # OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-Python . # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc import time # Import .NET namespaces. from OpcLabs.EasyOpc.UA import * from OpcLabs.EasyOpc.UA.OperationModel import * # The callback is a regular method the displays the value. def dataChangeCallback(sender, eventArgs): displayPrefix = '[{}]'.format(eventArgs.Arguments.State) if eventArgs.Succeeded: assert eventArgs.AttributeData is not None print(displayPrefix + ' Value: ' + '{}'.format(eventArgs.AttributeData.Value) + '\n', end='') else: print(displayPrefix + ' *** Failure: ' + eventArgs.ErrorMessageBrief + '\n', end='') endpointDescriptor = UAEndpointDescriptor('opc.tcp://opcua.demo-this.com:51210/UA/SampleServer') # or 'http://opcua.demo-this.com:51211/UA/SampleServer' (currently not supported) # or 'https://opcua.demo-this.com:51212/UA/SampleServer/' # Instantiate the client objects and make them isolated. client1 = EasyUAClient() client1.Isolated = True client2 = EasyUAClient() client2.Isolated = True print('Subscribing...') IEasyUAClientExtension.SubscribeDataChange(client1, endpointDescriptor, UANodeDescriptor('nsu=http://test.org/UA/Data/ ;i=10853'), 1000, EasyUADataChangeNotificationEventHandler(dataChangeCallback), 1) # state IEasyUAClientExtension.SubscribeDataChange(client2, endpointDescriptor, UANodeDescriptor('nsu=http://test.org/UA/Data/ ;i=10853'), 1000, EasyUADataChangeNotificationEventHandler(dataChangeCallback), 2) # state print('Processing data change events for 10 seconds...') time.sleep(10) print('Unsubscribing...') client1.UnsubscribeAllMonitoredItems() client2.UnsubscribeAllMonitoredItems() print('Waiting for 2 seconds...') time.sleep(2) print('Finished.')
' This example shows how to create and use two isolated client objects, resulting in two separate connections to the target ' OPC UA server. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Imports System.Windows.Forms.AxHost Imports OpcLabs.EasyOpc.UA Imports OpcLabs.EasyOpc.UA.OperationModel Namespace _EasyUAClient Partial Class Isolated Public Shared Sub Main1() ' Define which server we will work with. Dim endpointDescriptor As UAEndpointDescriptor = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" ' or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported) ' or "https://opcua.demo-this.com:51212/UA/SampleServer/" ' Instantiate the client objects and make them isolated Dim client1 = New EasyUAClient() With {.Isolated = True} Dim client2 = New EasyUAClient() With {.Isolated = True} ' The callback is a local method the displays the value Dim dataChangeCallback = Sub(ByVal sender As Object, ByVal eventArgs As EasyUADataChangeNotificationEventArgs) Debug.Assert(eventArgs IsNot Nothing) Dim displayPrefix As String = $"[{eventArgs.Arguments.State}]" If eventArgs.Succeeded Then Debug.Assert(eventArgs.AttributeData IsNot Nothing) Console.WriteLine($"{displayPrefix} {eventArgs.AttributeData}") Else Console.WriteLine($"{displayPrefix} *** Failure: {eventArgs.ErrorMessageBrief}") End If End Sub Console.WriteLine("Subscribing...") client1.SubscribeDataChange(endpointDescriptor, "nsu=http://test.org/UA/Data/ ;i=10853", 1000, dataChangeCallback, state:=1) client2.SubscribeDataChange(endpointDescriptor, "nsu=http://test.org/UA/Data/ ;i=10853", 1000, dataChangeCallback, state:=2) Console.WriteLine("Processing data change events for 10 seconds...") Threading.Thread.Sleep(10 * 1000) Console.WriteLine("Unsubscribing...") client1.UnsubscribeAllMonitoredItems() client2.UnsubscribeAllMonitoredItems() Console.WriteLine("Waiting for 2 seconds...") Threading.Thread.Sleep(2 * 1000) End Sub End Class End Namespace
Copyright © 2004-2024 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Send Documentation Feedback. Resources: Knowledge Base, Product Downloads. Technical support: Online Forums, FAQ.Missing some example? Ask us for it on our Online Forums! You do not have to own a commercial license in order to use Online Forums, and we reply to every post.